package com;
/*
* 使用 abstract 修饰的且没有方法体的方法   （没有方法体与空方法不同）
* 不能使用 private 、 final 或者 static修饰
* 智能定义在 抽象类 或者 接口 中
*
* 抽象类
*   使用 abstract 修饰的类，抽象类是对逻辑的归纳
*   有构造器，但不能直接用来创建对象，只留给子类创建对象时调用
*   可以没有抽象方法，可以有普通方法
*   子类继承一个抽象类，若抽象类里有抽象方法，必须 覆盖 或者把子类也声明成抽象类
*  */



public class abstract_class {
    public abstract class Shape{
        public abstract double getArea();
    }

    class Circle extends Shape{
        private double radius;

        public Circle(double radius){
            this.radius = radius;
        }

        @Override
        public double getArea() {
            return Math.PI * radius * radius;
        }
    }
    public static void main(String[] args) {
        // 实现这个  circle
        Circle circle = new abstract_class().new Circle(5);
        double area = circle.getArea();
        System.out.println("圆的面积：" + area);
    }
}
